色综合网亚洲精品久久-精品国产国语对白久久免费-噼里啪啦国语电影大全-日本高清在线一区欧美-精品AV一区二区三区不卡-国产精品免费一区二区区-日本高清一区免费中文视频

【20年品牌建站】找北京網(wǎng)站建設(shè)公司就選新鴻儒/提供北京網(wǎng)站建設(shè)報(bào)價(jià)/北京網(wǎng)站制作/北京網(wǎng)站設(shè)計(jì)/網(wǎng)站開發(fā)、北京網(wǎng)站建設(shè)公司電話【400-024-1998】有優(yōu)惠哦!
簡體
繁體 簡體
我們的服務(wù)遍布中國

我們的服務(wù)遍布中國
乃至世界

新鴻儒所服務(wù)的品牌地域與城市
北京 天津 上海 廣州 深圳 香港 廈門 江蘇 浙江 山東
重慶 長沙 武漢 成都 西安 寧夏 麗江 青海 云南 烏魯木齊
黑龍江 內(nèi)蒙古 河北 ...
新鴻儒服務(wù)與合作的全球各地
美國 加拿大 德國 法國 英國 瑞士 意大利 荷蘭
印度 日本 韓國 ...

不論你的品牌在何處
我們都可以提供完善的服務(wù)與幫助

致電

400-024-1998

java網(wǎng)站建設(shè)2-spring dao講解

發(fā)布時(shí)間:2013-11-22 瀏覽:466打印字號(hào):

Spring提供DAO支持的目的是以一致的方式使用不同的數(shù)據(jù)庫訪問技術(shù)

Spring把特定于某種技術(shù)的一場,如SQLException,轉(zhuǎn)化為自己的異常。這種異常以DataAccessException為根的異常層次。

使用JDBC進(jìn)行數(shù)據(jù)訪問:

Spring至少提供三種不同的工作模式:JdbcTemplate,SimpleJdbc和RDBMS Object風(fēng)格的面向?qū)ο蠓庋b方式。

JdbcTemplate:最經(jīng)典,最常用的Spring對于JDBC訪問的方案,也是最低級(jí)的封裝。其他方式以其作為實(shí)現(xiàn)基礎(chǔ)。

NamedParameterTemplate:對JdbcTemplate的封裝,提供了更加便捷的基于命名參數(shù)的使用方式而不是傳統(tǒng)的JDBC所使用的?作為參數(shù)占位符。

SimpleJdbcTemplate:結(jié)合JdbcTemplate和NamedParameterTemplate常用的功能,并利用Java5新特性帶來的優(yōu)勢。

SimpleJdbcInsert和SimpleJdbcCall:

RDBMS對象:

Spring Framework的JDBC抽象框架包括:core,datasource,object和support四個(gè)包

JdbcTemplate使用:

JdbcTemplate是core包的核心類,替我們完成了資源的創(chuàng)建和釋放工作,讓我們避免了類似忘記關(guān)閉數(shù)據(jù)庫連接這樣的錯(cuò)誤。

JdbcTemplate中使用的所有SQL會(huì)以DEBUG的級(jí)別記入日志。

JdbcTemplate優(yōu)質(zhì)實(shí)踐:

(1)JdbcTemplate是線程安全的,因此可以配置一個(gè)簡單的JdbcTemplate實(shí)例,將這個(gè)共享的實(shí)例注入到多個(gè)DAO類中。

(2)使用JdbcTemplate的一個(gè)優(yōu)質(zhì)實(shí)踐就是在配置文件中配置一個(gè)DataSource實(shí)例,然后將這個(gè)共享的DataSource注入到DAO中

(3)因?yàn)镴dbcTemplate是線程安全的,所以無需創(chuàng)建多個(gè)JdbcTemplate實(shí)例,除非要連接多個(gè)數(shù)據(jù)庫。

DataSource接口:

Spring使用DataSource對象來完成獲取數(shù)據(jù)庫連接。

使用Spring JDBC時(shí),既可以從JNDI獲取數(shù)據(jù)源,也可以自行配置數(shù)據(jù)源。

DBCP:DBCP是apache一個(gè)數(shù)據(jù)庫連接池項(xiàng)目,使用DBCP需要有三個(gè)包:COMMON-DBCP.JAR,COMMON-POOL.JAR和COMMON-COLLECTIONS.JAR

配置:

C3P0是一個(gè)開源的JDBC連接池,它實(shí)現(xiàn)了數(shù)據(jù)源和JNDI綁定。配置:

C3P0與DBCP的區(qū)別:dbcp沒有自動(dòng)的去回收空閑連接的功能,C3P0有

Query:(select)

返回單值的查詢方法:

int rowCount = this.jdbcTemplate.queryForInt("select count(*) from t_actor");

int countOfActorsNamedJoe = this.jdbcTemplate.queryForInt("select count(*) from t_actor where first_name = ?", "Joe");

String lastName = this.jdbcTemplate.queryForObject("select last_name from t_actor where id = ?",
new Object[]{1212L}, String.class);

查詢并生成領(lǐng)域?qū)ο螅?

public List findAllActors() {
  return this.jdbcTemplate.query( "select first_name, last_name from t_actor", new ActorMapper());
}
private static final class ActorMapper implements RowMapper {
  public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
    Actor actor = new Actor();
    actor.setFirstName(rs.getString("first_name"));
    actor.setLastName(rs.getString("last_name"));
    return actor;
  }
}

返回多值的查詢方法:

private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
  this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List> getList() {
  return this.jdbcTemplate.queryForList("select * from mytable");
}

update(update/insert/delete):

this.jdbcTemplate.update("insert into t_actor (first_name, last_name) values (?, ?)","Leonor", "Watling");

this.jdbcTemplate.update("update t_actor set = ? where id = ?","Banjo", 5276L);

this.jdbcTemplate.update("delete from actor where id = ?",Long.valueOf(actorId));

執(zhí)行DDL:

this.jdbcTemplate.execute("create table mytable (id integer, name varchar(100))");

NamedParameterJdbcTemplate:

private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void setDataSource(DataSource dataSource) {
   this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
public int countOfActorsByFirstName(String firstName) {
  String sql = "select count(*) from T_ACTOR where first_name = :first_name";
  SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName);
  return namedParameterJdbcTemplate.queryForInt(sql, namedParameters);
}

SqlParameterSource有兩個(gè)實(shí)現(xiàn),一個(gè)是MapSqlParameterSource,另一個(gè)是BeanPropertySqlParameterSource。

現(xiàn)在就與新鴻儒客服交流

400-024-1998

您也可進(jìn)行在線咨詢或預(yù)約項(xiàng)目顧問
我要預(yù)約
在線咨詢